define(['jQuery', 'common', 'layui'], function($, common, undefined) {
	var LayuiDir = requirejs.s.contexts._.config.baseUrl;
		layui.config({dir: LayuiDir+'../../plugins/layui/'});//配置layui 所在目录
	return {
		tab: new Object(),
		initPage: function() {
			var that_ = this;
			layui.config({
			    base: '../scripts/common/layui-plugins/',
			    version: new Date().getTime()
			}).use(['element', 'layer', 'navbar', 'tab'], function () {
				var element = layui.element,
		        $ = layui.jquery,
		        layer = layui.layer,
		        navbar = layui.navbar();
		        that_.tab = layui.tab({
			        elem: '.admin-nav-card' //设置选项卡容器
			        ,
			        //maxSetting: {
			        //	max: 5,
			        //	tipMsg: '只能开5个哇，不能再开了。真的。'
			        //},
			        contextMenu: true,
			        onSwitch: function (data) {
			            /*console.log(data.id); //当前Tab的Id
			            console.log(data.index); //得到当前Tab的所在下标
			            console.log(data.elem); //得到当前的Tab大容器
			            console.log(tab.getCurrentTabId())*/
			        },
			        closeBefore: function (obj) { //tab 关闭之前触发的事件
			            /*console.log(obj);*/
			            //obj.title  -- 标题
			            //obj.url    -- 链接地址
			            //obj.id     -- id
			            //obj.tabId  -- lay-id
			            if (obj.title === 'BTable') {
			                layer.confirm('确定要关闭' + obj.title + '吗?', { icon: 3, title: '系统提示' }, function (index) {
			                    //因为confirm是非阻塞的，所以这里关闭当前tab需要调用一下deleteTab方法
			                    that_.tab.deleteTab(obj.tabId);
			                    layer.close(index);
			                });
			                //返回true会直接关闭当前tab
			                return false;
			            }else if(obj.title==='表单'){
			                layer.confirm('未保存的数据可能会丢失哦，确定要关闭吗?', { icon: 3, title: '系统提示' }, function (index) {
			                    that_.tab.deleteTab(obj.tabId);
			                    layer.close(index);
			                });
			                return false;
			            }
			            return true;
			        }
			    });
			    
			    var navs = "";
			    common.network(ctx + "/SecurityController/leftMenu.do?t=" + new Date().getTime(), "POST", {}, false,function(data) {
			    	navs = data
			    });
			    //设置navbar
			    navbar.set({
			        elem: '#admin-navbar-side',
			        data: navs
					/*cached:true,
					url: 'datas/nav.json'*/
			    });
			    //渲染navbar
			    navbar.render();
			    //监听点击事件
			    navbar.on('click(side)', function (data) {
			        that_.tab.tabAdd(data.field);
			    });
			    //初始化欢迎首页
			    var data = {"href" : "../WelcomeController/welcome.do", "icon": "fa fa-dashboard", "title": "欢迎首页"};
			    that_.tab.tabAdd(data);
			    $.each($(".layui-tab-title").find("li"), function(i, o) {
			    	if (i == 0) {
			    		$(o).find(".layui-tab-close").remove();
			    	}
			    });
			    //清除缓存
			    $('#clearCached').on('click', function () {
			        navbar.cleanCached();
			        layer.alert('清除完成!', { icon: 1, title: '系统提示' }, function () {
			            location.reload();//刷新
			        });
			    });
			    that_.initEvent();
			});
		},
		initEvent: function() {
			var that_ = this;
			//手机设备的简单适配
		    var treeMobile = $('.site-tree-mobile'),
	        shadeMobile = $('.site-mobile-shade');
		    treeMobile.on('click', function () {
		        $('body').addClass('site-mobile');
		    });
		    shadeMobile.on('click', function () {
		        $('body').removeClass('site-mobile');
		    });
			//锁屏
		    $(document).on('keydown', function () {
		        var e = window.event;
		        if (e.keyCode === 76 && e.altKey) {
		            //alert("你按下了alt+l");
		            that_.lock($, layer);
		        }
		    });
		    $('#lock').on('click', function () {
		        that_.lock($, layer);
		    });
			//iframe自适应
		    $(window).on('resize', function () {
		        var $content = $('.admin-nav-card .layui-tab-content');
		        $content.height(document.body.clientHeight - 161);
		        $content.find('iframe').each(function () {
		            $(this).height($content.height());
		        });
		    }).resize();
		    //收起侧边栏
		    $('.admin-side-toggle').on('click', function () {
		        var sideWidth = $('#admin-side').width();
		        if (sideWidth === 320) {
		            $('#admin-body').animate({
		                left: '0'
		            }); //admin-footer
		            $('#admin-footer').animate({
		                left: '0'
		            });
		            $('#admin-side').animate({
		                width: '0'
		            });
		        } else {
		            $('#admin-body').animate({
		                left: '360px'
		            });
		            $('#admin-footer').animate({
		                left: '360px'
		            });
		            $('#admin-side').animate({
		                width: '320px'
		            });
		        }
		    });
		    //全屏
		    $('.admin-side-full').on('click', function () {
		        var docElm = document.documentElement;
		        //W3C  
		        if (docElm.requestFullscreen) {
		            docElm.requestFullscreen();
		        }
		        //FireFox  
		        else if (docElm.mozRequestFullScreen) {
		            docElm.mozRequestFullScreen();
		        }
		        //Chrome等  
		        else if (docElm.webkitRequestFullScreen) {
		            docElm.webkitRequestFullScreen();
		        }
		        //IE11
		        else if (elem.msRequestFullscreen) {
		            elem.msRequestFullscreen();
		        }
				//layer.msg('按Esc即可退出全屏');
		    	mainform.fullscreen();
		    });
		    $('#setting').on('click', function () {
		        that_.tab.tabAdd({
		            href: '/Manage/Account/Setting/',
		            icon: 'fa-gear',
		            title: '设置'
		        });
		    });
		    
		},
		lock: function($, layer) {
			if (isShowLock)
		        return;
		    //自定页
		    layer.open({
		        title: false,
		        type: 1,
		        closeBtn: 0,
		        anim: 6,
		        content: $('#lock-temp').html(),
		        shade: [0.9, '#393D49'],
		        success: function (layero, lockIndex) {
		            isShowLock = true;
		            //给显示用户名赋值
		            //layero.find('div#lockUserName').text('admin');
		            //layero.find('input[name=username]').val('admin');
		            layero.find('input[name=password]').on('focus', function () {
		                var $this = $(this);
		                if ($this.val() === '输入密码解锁..') {
		                    $this.val('').attr('type', 'password');
		                }
		            })
		                .on('blur', function () {
		                    var $this = $(this);
		                    if ($this.val() === '' || $this.length === 0) {
		                        $this.attr('type', 'text').val('输入密码解锁..');
		                    }
		                });
		            //在此处可以写一个请求到服务端删除相关身份认证，因为考虑到如果浏览器被强制刷新的时候，身份验证还存在的情况			
		            //do something...
		            //e.g. 
		
		            $.getJSON('/Account/Logout', null, function (res) {
		                if (!res.rel) {
		                    layer.msg(res.msg);
		                }
		            }, 'json');
		
		            //绑定解锁按钮的点击事件
		            layero.find('button#unlock').on('click', function () {
		                var $lockBox = $('div#lock-box');
		                var userName = $lockBox.find('input[name=username]').val();
		                var pwd = $lockBox.find('input[name=password]').val();
		                if (pwd === '输入密码解锁..' || pwd.length === 0) {
		                    layer.msg('请输入密码..', {
		                        icon: 2,
		                        time: 1000
		                    });
		                    return;
		                }
		                unlock(userName, pwd);
		            });
					/**
					 * 解锁操作方法
					 * @param {String} 用户名
					 * @param {String} 密码
					 */
		            var unlock = function (un, pwd) {
		                /*console.log(un, pwd);*/
		                //这里可以使用ajax方法解锁
		                $.post('/Account/UnLock', { userName: un, password: pwd }, function (res) {
		                    //验证成功
		                    if (res.rel) {
		                        //关闭锁屏层
		                        layer.close(lockIndex);
		                        isShowLock = false;
		                    } else {
		                        layer.msg(res.msg, { icon: 2, time: 1000 });
		                    }
		                }, 'json');
		                //isShowLock = false;
		                //演示：默认输入密码都算成功
		                //关闭锁屏层
		                //layer.close(lockIndex);
		            };
		        }
		    });
		}
	}
});
